<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<meta http-equiv="x-ua-compatible" content="ie=edge">
		<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no, minimal-ui" />
		<link rel="stylesheet" href="build/conversational-form-docs.min.css">

		<script type="text/javascript" src="https://cf-4053.kxcdn.com/conversational-form/0.9.6/conversational-form.min.js" crossorigin></script>
	</head>
	<body>
		<script src="build/conversational-form-examples.min.js" id="examples-script"></script>

		<main class="content">
			<menu id="small-screen-menu">
				<h2>Conversational Form examples</h2>

				<div class="switch-btn">
					<label class="switch">
						<input type="checkbox" onclick="window.conversationalFormExamples.toggleConversation(event)">
						<div class="slider round"></div>
					</label>
				</div>

				<div class="hamburger-btn" onclick="window.conversationalFormExamples.toggleMenuState(event)">
					<svg viewBox="0 0 29 14" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
						<g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="square">
							<g transform="translate(-325.000000, -87.000000)" stroke="#FFFFFF" stroke-width="2">
								<g transform="translate(325.000000, 87.000000)">
									<path d="M27.4802431,7 L1.23827993,7"></path>
									<path d="M27.4802431,1 L1.23827993,1"></path>
									<path d="M27.4802431,13 L1.23827993,13"></path>
								</g>
							</g>
						</g>
					</svg>
				</div>
			</menu>

			<div class="switch-btn" id="cf-toggle-btn" data-label="Enable Conversational Form" data-label-toggled="Disable Conversational Form">
				<label class="switch">
					<input type="checkbox" onclick="window.conversationalFormExamples.toggleConversation(event)">
					<div class="slider round"></div>
				</label>
			</div>

			<section id="info" role="info">
				<div class="close-btn" onclick="window.conversationalFormExamples.toggleMenuState()">
					<svg viewBox="0 0 22 22" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
						<g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="square">
							<g transform="translate(-328.000000, -83.000000)" stroke="#FFFFFF" stroke-width="2">
								<g id="close" transform="translate(329.000000, 84.000000)">
									<path d="M19.6371966,19.2779351 L1.08132646,0.722064927"></path>
									<path d="M19.4923318,0.722064927 L0.936461672,19.2779351"></path>
								</g>
							</g>
						</g>
					</svg>
				</div>

				<article>
					<h1 id="writer">
						Setup Conversational Form from a React component
					</h1>
					<h2>
						Check the source — we use ES6 class — we create a React component {Hello} and renders Conversational Form using React API basics.
					</h2>
				</article>
			</section>

			<section role="form">
				<div class="form-outer">
					
				</div>
			</section>

			<section id="cf-context" role="cf-context" cf-context>
				
			</section>

			<!-- load React.js -->
			<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/react/15.5.4/react.js" crossorigin></script>
			<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/react/15.5.4/react-dom.js" crossorigin></script>

			<script>
				(function(){
					class Hello extends React.Component {
						constructor(props) {
							super(props);
							this.cf = null; // <-- Conversational Form ref
						}
						componentDidMount(){
							// add Conversational Form info
							this.refs.name.setAttribute('cf-questions', "Your name?");
							this.refs.email.setAttribute('cf-questions', "Your email?");
							this.refs.description.setAttribute('cf-questions', "What is description?");

							this.cf = window.cf.ConversationalForm.startTheConversation({
								formEl: this.refs.form,
								context: document.getElementById("cf-context"),
								flowStepCallback: function(dto, success, error){
									success();
								},
								submitCallback: function(){
									// this callback could also be added to the React.createElement it self...
									alert("You made it!")
									console.log("Form submitted...");
								}
							});
						}
						render() {
							return React.createElement('form', {
								id: "form",
								ref: "form",
								className: 'form'
							},
								React.createElement('input', {
									type: 'text',
									ref: "name",
									placeholder: 'Name (required)',
									defaultValue: this.props.name,
								}),
								React.createElement('input', {
									type: 'email',
									ref: "email",
									placeholder: 'Email',
									defaultValue: this.props.email,
								}),
								React.createElement('textarea', {
									placeholder: 'Description',
									ref: "description",
									defaultValue: this.props.description,
								}),
								React.createElement('button', {type: 'submit'}, "Submit")
							)
						}
					};

					ReactDOM.render(React.createElement(Hello, {
						name: "Input name..",
						email: "Input email..",
						description: "Input description..",
					}), document.getElementsByClassName('form-outer')[0]);
				})();
			</script>
		</main>
	</body>
</html>
